/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2022-2023. All rights reserved.
 */

package dao

import (
	"prim-server/model"

	"github.com/astaxie/beego/orm"
	"github.com/pkg/errors"
)

type TimerTaskDao struct {
	BaseDao
}

type ITimerTaskDao interface {
	GetTimerTask(taskId int) (*model.TimerTask, error)
	InsertTimerTask(task *model.TimerTask) error
	UpdateTimerTask(task *model.TimerTask) error
}

func GetTimerTaskDao() ITimerTaskDao {
	dao := &TimerTaskDao{}
	dao.Init()
	return dao
}

func (td *TimerTaskDao) GetTimerTask(taskId int) (*model.TimerTask, error) {
	task := new(model.TimerTask)
	err := td.O.QueryTable(&model.TimerTask{}).Filter("task_id", taskId).One(task)
	if err != nil {
		if err == orm.ErrNoRows {
			return nil, nil
		}
		return nil, errors.Errorf("GetTimerTask error: %v, taskId: %s", err, task.TaskId)
	}
	return task, nil
}
func (td *TimerTaskDao) InsertTimerTask(task *model.TimerTask) error {
	if task == nil {
		return nil
	}
	_, err := td.O.Insert(task)
	if err != nil {
		return errors.Errorf("InsertTimerTask error: %v, taskId: %s", err, task.TaskId)
	}
	return nil
}

func (td *TimerTaskDao) UpdateTimerTask(task *model.TimerTask) error {
	if task == nil {
		return nil
	}
	_, err := td.O.Update(task)
	if err != nil {
		return errors.Errorf("UpdateTimerTask error: %v, taskId: %s", err, task.TaskId)
	}
	return nil
}
